// #include <stdio.h>
// #include <stdlib.h>
// #include <unistd.h>
// #include <string.h>

// int main()
// {
//     int fds[2];
//     char buf[100];
//     int len;

//     if (pipe(fds) == -1)
//     {
//         perror("make pipe");
//         exit(1);
//     }
//     //从键盘里读数据
//     while(fgets(buf,100,stdin))
//     {
//         len=strlen(buf);
//         //向管道写入
//         if(write(fds[1],buf,len)!=len)
//         {
//             perror("write pipe error");
//             break;
//         }
//         //把buf里每个字节都清0
//         memset(buf,0x00,sizeof(buf));

//         //从管道读
//         if(read(fds[0],buf,100)==-1)
//         {
//             perror("read pipe error");
//             break;
//         }

//         if(write(1,buf,len)!=len)
//         {
//             perror("write to stdout");
//             break;
//         }
//     }
//     return 0;
// }

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>



// int main()
// {
//     int pipefd[2];
//     if (pipe(pipefd) == -1)
//     {
//         perror("pipe error");
//         exit(1);
//     }

//     pid_t pid;
//     pid = fork();
//     if (pid == -1)
//     {
//         perror("fork error");
//         exit(2);
//     }
//     if (pid == 0) // child
//     {
//         // 关闭读端
//         close(pipefd[0]);
//         write(pipefd[1], "hello", 5);
//         close(pipefd[1]);
//         exit(6);
//     }
//     close(pipefd[1]);
//     char buf[10] = {0};
//     read(pipefd[0], buf, sizeof(buf));
//     printf("buf=%s\n", buf);

//     return 0;
// }

int main()
{
    mkfifo("tp",0644);
    int infd;
    infd=open("abc",O_RDONLY);
    if(infd==-1)
    {
        perror("in open");
        exit(1);
    }
    int outfd;
    outfd=open("tp",O_WRONLY);
    if(outfd==-1)
    {
        perror("out open");
        exit(1);
    }
    char buf[1024]={0};
    int n;
    while((n=read(infd,buf,1024))>0)
    {
        write(outfd,buf,n);
    }
    return 0;
}